#ifndef VOLINTERFACE_H
#define VOLINTERFACE_H

#include <QtGui>

#include <QGLViewer/vec.h>
using namespace qglviewer;

class VolInterface
{
 public :
  virtual ~VolInterface() {}  
  virtual void init() {};
  virtual void setFilename(QList<QString>) {}; 
  virtual void setTextureSize(int) {};
  virtual void setMemorySize(int) {};
  virtual void setGridSize(int, int, int) {};
  virtual void setUserLimits(Vec, Vec) {};
  virtual void gridSize(int&, int&, int&) {};
  virtual void gridSize(int, int&, int&, int&) {};
  virtual void p2gridSize(int&, int&, int&) {};
  virtual void compactGridSize(int&, int&, int&) {};
  virtual void blockedGridSize(int&, int&, int&) {};
  virtual void p2blockedGridSize(int&, int&, int&) {};
  virtual int* get1dHistogram() { return 0;}
  virtual int* get2dHistogram() { return 0;}
  virtual int* get1dHistogram(int) { return 0;}
  virtual int* get2dHistogram(int) { return 0;}
  virtual uchar *blockLevel() {return 0; };
  virtual uchar* blockedData() {return 0; };
  virtual uchar* auxData() {return 0; };
  virtual int blockSize() {return 0; };
  virtual bool initIdentifyValidBlocks(int) {return false;};
  virtual bool initIdentifyValidBlocks(uchar*) {return false;};
  virtual int minLod() { return 0; }
  virtual int minLod(int) { return 0; }
  virtual int minLod(uchar*) { return 0; }
  virtual void setLodLevel(int) {};
  virtual void loadBlocks(QList<Vec>, int) {};
  virtual void loadAllValidBlocks(int) {};
  virtual uchar *wholeVolume(int) { return 0; };
  virtual uchar *loadSingleBlock(int, int, int, int) { return 0; };

  virtual void setIsovalue(int) {};
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(VolInterface,
		    "drishticuda.Plugin.VolInterface/1.0");
QT_END_NAMESPACE

#endif
